Skip to content

数据库

订阅

CREATE TABLE `subscription` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `desc` varchar(256) NOT NULL,
  `topic` varchar(64) NOT NULL COMMENT '主题,比如`order`',
  `tags` varchar(256) NOT NULL COMMENT '订阅标签',
  `subscriber` varchar(64) NOT NULL COMMENT '订阅消息的资源,比如`purchase_task`,相同 key 的消息在一个订阅资源内保续',
  `push_url` varchar(256) NOT NULL COMMENT '消息接受 url, 比如`/station/purchase/task/create`',
  `check_url` varchar(256) NOT NULL DEFAULT '' COMMENT '检查 url',
  `creator_name` varchar(32) NOT NULL DEFAULT '',
  `header_filters` json COMMENT '过滤项,从消息的头字段中提取过滤项,符合条件的才会被推送,为空时不过滤,支持正则',
  `cookie_filters` json COMMENT '过滤项,从消息的cookies中提取过滤项,符合条件的才会被推送,为空时不过滤,支持正则',
  `create_time` datetime NOT NULL,
  `modify_time` datetime NOT NULL,
  `delete_time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='订阅表';

不要支持灰度

消息表

CREATE TABLE `msg` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `topic` varchar(128) NOT NULL COMMENT '数据源',
  `tags` varchar(256) NOT NULL COMMENT '消息自带标签',
  `body` text NOT NULL COMMENT '完整数据',
  `body_hash` varchar(64) NOT NULL COMMENT '数据hash值用于校验',
  `key` varchar(128) NOT NULL COMMENT '关键字',
  `seq` int(11) NOT NULL COMMENT '序号(用于保证和关键字相关的消息的顺序)',
  `serial` varchar(64) NOT NULL DEFAULT '' COMMENT '事务号',
  `send_count` int(11) NOT NULL COMMENT '发送次数',
  `status` int(11) NOT NULL COMMENT '状态(1未操作2已操作3已发送4已接收)',
  `create_time` datetime NOT NULL,
  `modify_time` datetime NOT NULL,
  `delete_time` datetime NOT NULL,
  `cookies` json NOT NULL,
  `headers` json NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='消息表';

推送表

CREATE TABLE `push` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `subscription_id` int(11) NOT NULL COMMENT '订阅ID',
  `msg_id` bigint(20) NOT NULL COMMENT '消息ID',
  `key` varchar(128) NOT NULL COMMENT '关键字',
  `subscriber` varchar(64) NOT NULL COMMENT '订阅消息的资源,比如`purchase_task`',
  `msg_seq` int(11) NOT NULL COMMENT '消息序号',
  `seq` int(11) NOT NULL COMMENT '推送序号',
  `push_count` int(11) NOT NULL COMMENT '推送次数',
  `status` int(11) NOT NULL COMMENT '状态(1已接收2推送成功3推送失败)',
  `create_time` datetime NOT NULL,
  `modify_time` datetime NOT NULL,
  `delete_time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='推送表';